package com.neuedu.corejava.ch5;

//
/**
 * <pre>
 * 文档注释：用于生成api文档或在编码时可以进行提示
 *       文档注释支持使用部分HTML网页标签和css样式
 *       
 * java类中方法的定义：
 * 1、实例方法与类方法
 * 
 * 2、有参方法和无参方法
 * 
 * 3、有返回值和无返回值
 * 
 * 4、方法的定义和方法的调用/使用
 * 
 * 5、基本数据类型与引用数据类型
 *       
 *       
 * <pre>
 * @author netboy
 * 
 */



public class MethodsClass {
	//方法的重载与访问修饰符无关，static修饰符无关
	//使用static修饰的方法叫类方法或静态方法；类方法可以直接通过类名进行调用，不需要实例化对象
	public static void printColor(char color){//在定义方法时，参数列表上的参数称为形式参数
		System.out.println(color);
	}
	
	
	
	
	
	//设计一个方法，接收两个整数进行加法计算，并返回和
	//在方法定义时，如果声明了返回值的类型，则必须在方法体中使用return语句返回一个类型匹配的值
	public int add(int a,int b){
		//如果方法存在多个分支，则每个分支都需要使用return语句返回一个值
//		if(a==0 && b==0){
//			return 0;
//		}else{
//			int c=a+b;
//			return c;
//		}
		
		
		//当方法内部需要返回不同值，可以使用多个return语句在不同情况下返回不同的值
		//也可以根据不同的情况，修改统一的返回变量的值：再在方法的后面使用一个return语句返回变量值
		int ret=0;
		if(a==0 && b==0){
			ret=-1;
		}else{
			 ret=a+b;
		}
		return ret;
	}

	//方法可以没有参数，和没有返回值，当方法没有返回值时，需要使用void进行声明
	//void关键词表示void类型，表示没有数据类型
	//private是访问修饰符号，表示私有的意思；使用private修饰的实例变量或方法，只能在该类的内部使用
	//java的访问修饰符号共有4类：public 公有的，protect 受保护的，默认（不写），private 私有的
	//
	private void printColor(){
		System.out.println("红色");
	}
	
	//访问修饰符号是protect表示受保护的
	protected int printColor(String color){
		System.out.println(color);
		return 1;
	}
	
	public void printColor(int count){
		 for(int i=0;i<count;i++){
			 System.out.println("红色");
		 }
	}
	
	
	//访问修饰符号是（default）默认的，
	//方法的重载：在同一个类中，方法名相同，参数列表不同（参数个数不同，参数类型不同,参数类型的顺序不同）；与访问修饰符号无关，与返回值的类型无关
	 void printColor(String color,int count){
		 for(int i=0;i<count;i++){
			 System.out.println(color);
		 }
	}
	
	 void printColor(int count,String color){
		 for(int i=0;i<count;i++){
			 System.out.println(color);
		 }
	}
	 
	
	
	
	public static void main(String[] args) {
		//没有使用static修饰的方法称为实例方法
		//使用static修饰的方法称为类方法或静态方法
		//实例方法必须通过实例对象进行调用
		//类与对象的关系，类实例化
		//mclass是一个实例变量的引用，经常把它简称为实例对象
		MethodsClass mclass=new MethodsClass();
		//对象引用方法/调用方法或属性/实例变量的操作符号是点号(.)
		//方法重载后，在调用方法时，jvm能根据参数类型列表自动识别并调用不同的方法
		//为什么要重载？方便进行功能维护和可扩展性
		mclass.printColor();
		mclass.printColor("紫色");
		mclass.printColor("蓝色",3);
		mclass.printColor(2);
		
		
		mclass.printColor(4,"橙色");//在方法调用时，实际传递的参数是实参
		int a=5;
		mclass.printColor(5);//a是实参，实参是保存有实际数据值的变量  或 数据值
		
		//静态方法可以使用类名，方法名进行调用
		MethodsClass.printColor('白');
		//如果在同一个类中可以省略
		printColor('黑');
		
		
	}
	
	
}


























































